/*
 * This header was generated from the Linux kernel headers by update_headers.py,
 * to provide necessary information from kernel to userspace, such as constants,
 * structures, and macros, and thus, contains no copyrightable information.
 */
#ifndef _UAPI_SCC_H
#define _UAPI_SCC_H
#define PA0HZP		0x00
#define EAGLE		0x01
#define PC100		0x02
#define PRIMUS		0x04
#define DRSI		0x08
#define BAYCOM		0x10
enum SCC_ioctl_cmds {
	SIOCSCCRESERVED = SIOCDEVPRIVATE,
	SIOCSCCCFG,
	SIOCSCCINI,
	SIOCSCCCHANINI,
	SIOCSCCSMEM,
	SIOCSCCGKISS,
	SIOCSCCSKISS,
	SIOCSCCGSTAT,
	SIOCSCCCAL
};
enum L1_params {
	PARAM_DATA,
	PARAM_TXDELAY,
	PARAM_PERSIST,
	PARAM_SLOTTIME,
	PARAM_TXTAIL,
	PARAM_FULLDUP,
	PARAM_SOFTDCD,
	PARAM_MUTE,
	PARAM_DTR,
	PARAM_RTS,
	PARAM_SPEED,
	PARAM_ENDDELAY,
	PARAM_GROUP,
	PARAM_IDLE,
	PARAM_MIN,
	PARAM_MAXKEY,
	PARAM_WAIT,
	PARAM_MAXDEFER,
	PARAM_TX,
	PARAM_HWEVENT = 31,
	PARAM_RETURN = 255
};
enum FULLDUP_modes {
	KISS_DUPLEX_HALF,
	KISS_DUPLEX_FULL,
	KISS_DUPLEX_LINK,
	KISS_DUPLEX_OPTIMA
};
#define TIMER_OFF	65535U
#define NO_SUCH_PARAM	65534U
enum HWEVENT_opts {
	HWEV_DCD_ON,
	HWEV_DCD_OFF,
	HWEV_ALL_SENT
};
#define RXGROUP		0100
#define TXGROUP		0200
enum CLOCK_sources {
	CLK_DPLL,
	CLK_EXTERNAL,
	CLK_DIVIDER,

	CLK_BRG

};
enum TX_state {
	TXS_IDLE,
	TXS_BUSY,
	TXS_ACTIVE,
	TXS_NEWFRAME,
	TXS_IDLE2,
	TXS_WAIT,
	TXS_TIMEOUT
};
typedef unsigned long io_port;
struct scc_stat {
        long rxints;
        long txints;
        long exints;
        long spints;
        long txframes;
        long rxframes;
        long rxerrs;
        long txerrs;

	unsigned int nospace;
	unsigned int rx_over;
	unsigned int tx_under;
	unsigned int tx_state;
	int tx_queued;
	unsigned int maxqueue;
	unsigned int bufsize;
};
struct scc_modem {
	long speed;
	char clocksrc;
	char nrz;
};
struct scc_kiss_cmd {
	int  	 command;
	unsigned param;
};
struct scc_hw_config {
	io_port data_a;
	io_port ctrl_a;
	io_port data_b;
	io_port ctrl_b;
	io_port vector_latch;
	io_port	special;
	int	irq;
	long	clock;
	char	option;
	char brand;
	char escc;
};
struct scc_mem_config {
	unsigned int dummy;
	unsigned int bufsize;
};
struct scc_calibrate {
	unsigned int time;
	unsigned char pattern;
};
#endif
